
function checkType(target) {
  return Object.prototype.toString.call(target)
}
/**
 * 实现深拷贝
 * @param {*} target  目标对象
 */
function clone(target) {
  // 第一步判断数据类型
  // 如果是基本数据类型直接复制return
  let result
  if (checkType(target) === '[object Array]') {
    result = []
  } else if (checkType(target) === '[object Object]') {
    result = {}
  } else {
    return target
  }

  for (const key in target) {
    if (checkType(target[key]) === '[object Object]' || checkType(target) === '[object Array]') {
      result[key] = clone(target[key])
    } else {
      result[key] = target[key]
    }

  }
  return result
}
console.log(clone(['999']))
console.log(clone({ r: '999' }))


 // 浅拷贝方法 
 //Object.assign() 、解构
 // 数组浅拷贝 concat
